using KrasDD.Models;

namespace KrasDD.Dtos
{
    /// <summary>
    /// 事件测试结果
    /// </summary>
    public class EventTestResult
    {
        /// <summary>
        /// 测试是否成功
        /// </summary>
        public bool Success { get; set; }
        
        /// <summary>
        /// 测试消息
        /// </summary>
        public string Message { get; set; }
        
        /// <summary>
        /// 错误信息
        /// </summary>
        public string Error { get; set; }
        
        /// <summary>
        /// 测试数据是否创建成功
        /// </summary>
        public bool TestDataCreated { get; set; }
        
        /// <summary>
        /// 创建的文档
        /// </summary>
        public DOCUMENT CreatedDocument { get; set; }
        
        /// <summary>
        /// 创建事件是否触发
        /// </summary>
        public bool CreateEventTriggered { get; set; }
        
        /// <summary>
        /// 更新的文档
        /// </summary>
        public DOCUMENT UpdatedDocument { get; set; }
        
        /// <summary>
        /// 更新事件是否触发
        /// </summary>
        public bool UpdateEventTriggered { get; set; }
        
        /// <summary>
        /// 删除事件是否触发
        /// </summary>
        public bool DeleteEventTriggered { get; set; }
    }

    /// <summary>
    /// 事件验证结果
    /// </summary>
    public class EventVerificationResult
    {
        /// <summary>
        /// 文档ID
        /// </summary>
        public string DocumentId { get; set; }
        
        /// <summary>
        /// 键名
        /// </summary>
        public string KeyedName { get; set; }
        
        /// <summary>
        /// 描述
        /// </summary>
        public string Description { get; set; }
        
        /// <summary>
        /// 创建事件是否触发
        /// </summary>
        public bool CreateEventTriggered { get; set; }
        
        /// <summary>
        /// 更新事件是否触发
        /// </summary>
        public bool UpdateEventTriggered { get; set; }
        
        /// <summary>
        /// 最后修改时间
        /// </summary>
        public DateTime? LastModified { get; set; }
    }
}
